﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Data;
using System.Transactions;
using System.Text;
using DAL;
using System.Web;
using System.Web.UI;
using System.IO;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data.OleDb;
using UtilityExtensions;
namespace BOL
{
    [Serializable]
    public class ReadExcelBOL
    {

        public void importExcel(dbGestionDataContext _db)
        {

            Microsoft.Office.Interop.Excel.Application xlsApp = new Microsoft.Office.Interop.Excel.Application();
            Microsoft.Office.Interop.Excel.Workbook wbPresupuesto;
            Microsoft.Office.Interop.Excel.Worksheet wsPresupuesto;


            string ruta = String.Format(@"C:\tmp\FRACASCO.xlsx");
            
            string directorioArchivo = ruta;
            

            bool FinArchivo = false;
            int numeroCelda = 1;
            int condadorVacio = 1;
            int cursor = 0;
            string celdaValor = "";
            try
            {

                wbPresupuesto = xlsApp.Workbooks.Open(directorioArchivo);
                wsPresupuesto =
                    (Microsoft.Office.Interop.Excel.Worksheet)wbPresupuesto.ActiveSheet;

               

                int intgrupo = 0;

                while (!FinArchivo)
                {
                    DOCUMENTOFR nuevo = new DOCUMENTOFR();

                    cursor++;
                    celdaValor =
                        this.ReadCelda(ref wsPresupuesto, "A" + cursor);
                    numeroCelda++;

                  

                    if (celdaValor != "")
                    {

                        nuevo.idObra = this.ReadCelda(ref wsPresupuesto, "A" + cursor).ToInt();
                        nuevo.FR=this.ReadCelda(ref wsPresupuesto, "B" + cursor);
                        nuevo.OC=this.ReadCelda(ref wsPresupuesto, "C" + cursor);
                        nuevo.FECDOC = this.ReadCelda(ref wsPresupuesto, "D" + cursor);
                        nuevo.DOCUMENTO = this.ReadCelda(ref wsPresupuesto, "E" + cursor);
                        nuevo.RUC = this.ReadCelda(ref wsPresupuesto, "F" + cursor);
                        nuevo.PROVEEDOR = this.ReadCelda(ref wsPresupuesto, "G" + cursor);
                        nuevo.GLOSAS = this.ReadCelda(ref wsPresupuesto, "H" + cursor);
                        nuevo.COSTOSOL = this.ReadCelda(ref wsPresupuesto, "I" + cursor);
                        nuevo.IGVSOL= this.ReadCelda(ref wsPresupuesto, "J" + cursor);
                        nuevo.TOTALSOL = this.ReadCelda(ref wsPresupuesto, "K" + cursor);
                        
                        _db.DOCUMENTOFRs.InsertOnSubmit(nuevo);
                    }
                    //para terminar con el recorrido
                    if (celdaValor == "")
                    {
                        condadorVacio++;
                    }
                    if (condadorVacio == 15)
                        break;
                }

                using (TransactionScope ts = new TransactionScope())
                {
                    _db.SubmitChanges();
                    ts.Complete();

                }
            }


            catch (Exception ex)
            {
                xlsApp.ActiveWorkbook.Close(true, directorioArchivo, Type.Missing);
                throw new Exception(ex.Message + "Ruta:" + directorioArchivo + "celda:" + celdaValor + "CURSOR:" + cursor);
            }
            finally
            {
                xlsApp.ActiveWorkbook.Close(true, directorioArchivo, Type.Missing);
                xlsApp.Quit();
                xlsApp = null;
            }
        }






        private string ReadCelda(ref Microsoft.Office.Interop.Excel.Worksheet sheet, string cell)
        {
            Microsoft.Office.Interop.Excel.Range range = sheet.get_Range(cell, cell);
            if (range.Value2 != null)
                return range.Value2.ToString();
            else
                return "";
        }


        private decimal clearDecimal(string costo)
        {
            decimal num = 0;

            char[] delimiterChars = { '(', ')' };

            string[] Cantidad =
              costo.Split(delimiterChars);
            for (int i = 0; i < Cantidad.Count(); i++)
            {
                if (!(Cantidad[i].Equals("")))
                    decimal.TryParse(Cantidad[i].ToString(), out num);

            }
            return num;
        }


    }

    //public class DocumentoFR
    //{

        
    //    public string FR { get; set; }	
    //    public string OC { get; set; }	
    //    public string FECDOC { get; set; }
    //    public string DOCUMENTO { get; set; }	
    //    public string RUC  { get; set; }	 		
    //    public string PROVEEDOR	 { get; set; }	
    //    public string GLOSAS  { get; set; }		 
    //    public string CostoSOL  { get; set; }	 	 
    //    public string IgvSOL   { get; set; }		 
    //    public string TotalSOL  { get; set; }	 	 
    //    public string TP 	    { get; set; }	
    //    public string CostoDOL   { get; set; }		 
    //    public string IgvDOL 	 { get; set; }	 
    //    public string TotalDOL  { get; set; }	
    //}
}
